package com.yonyougov.devops.cruxcisupport.k8s.service;

import com.yonyougov.devops.cruxcisupport.k8s.error.K8sConfIgNotFindException;
import io.fabric8.kubernetes.api.model.Service;
import io.fabric8.kubernetes.client.KubernetesClient;

public interface ServiceRepository {
    /**
     * 创建或者更新
     * @param serviceRequest 需要的参数
     * @return Service
     */
    Service createOrReplace(ServiceRequest serviceRequest) throws K8sConfIgNotFindException;

    /**
     * 获取service
     * @param nameSpace 命名空间
     * @param serviceName 服务名称
     * @return Service
     */
    Service get(String nameSpace, String serviceName) throws K8sConfIgNotFindException;

    /**
     * 获取service
     * @param client 客户端
     * @param nameSpace 命名空间
     * @param serviceName 服务名称
     * @return Service
     */
    Service get(KubernetesClient client , String nameSpace, String serviceName);


    /**
     * 获取service
     * @param nameSpace 命名空间
     * @param appName 应用名称
     * @return Service
     */
    Service getServiceNameByAppName(String nameSpace, String appName) throws K8sConfIgNotFindException;

    /**
     * 获取service
     * @param client 客户端
     * @param nameSpace 命名空间
     * @param appName 应用名称
     * @return Service
     */
    Service getServiceNameByAppName(KubernetesClient client , String nameSpace, String appName);


    /**
     * 删除service
     * @param client 客户端
     * @param nameSpace 命名空间
     * @param serviceName 服务名称
     * @return boolean
     */
    boolean delete(KubernetesClient client,String nameSpace, String serviceName);

    /**
     * 删除service
     * @param nameSpace 命名空间
     * @param serviceName 服务名称
     * @return boolean
     */
    boolean delete(String nameSpace, String serviceName) throws K8sConfIgNotFindException;
}
